#pragma once

#include "types.hpp"
#include <vector>
#include <iostream>

namespace Datas
{

// enum隠蔽おいしいです
/// Types of Mob
typedef struct { enum MobType{ 
	Ship,
	Submarine,
	Size
};} MobTypes;
typedef MobTypes::MobType mob_t;

////////////////////////////////////////////////////////////////
// InfoType of Datas
//
/// Type of ship's info
struct shipinfo_t
{
	const char* name;			///< Name
	uint life;					///< Initial Life
	mob_t type;					///< Type of ship
	int op_flag;				///< Operation
	uint movable_distance;		///< Range of move
	uint attackable_distance;	///< Range of attach
	uint sight_over;			///< Sight
	uint sight_under; 			///< Sight to underwater
	uint sight_depth;			///< Depth sight_under
	uint sight_underwater; 		///< Sight in underwater
//	int movable_area[5];		///< bit table
};

	extern const shipinfo_t ShipInfos[];
	uint GetShipInfosSize();

	#if defined(DEBUG)
	extern void printall();
	#endif
}

#if defined(DEBUG)
std::ostream& operator<<(
	std::ostream& o, const Datas::shipinfo_t& i);
#endif

